package com.sojson.util.serialize;

import java.io.IOException;

/**
 * 序列化工具类接口
 * 
 * @author liu
 * @Date 2020-06-15 14:51:09
 * @Description
 *
 */
public interface SerializeUtilInterface {

    /**
     * 将对象转换为字节数组
     * 
     * @param value 要转换的对象
     * @return 转换后的数组
     * @throws IOException
     */
    byte[] serialize(Object value) throws IOException;

    /**
     * 将字节数组转换为Object类型的对象
     * 
     * @param in 要转换的字节数组
     * @return 转换后的对象
     * @throws IOException
     * @throws ClassNotFoundException
     */
    Object deserialize(byte[] in) throws ClassNotFoundException, IOException;

    /**
     * 将字节数组转换为指定类型的对象
     * 
     * @param in 要转换的字节数组
     * @param requiredType 转换后的对象的类型
     * @return 转换后的对象
     * @throws IOException
     * @throws ClassNotFoundException
     */
    <T> T deserialize(byte[] in, Class<T> requiredType) throws IOException, ClassNotFoundException;

}